/*
 *  Licensed to the Apache Software Foundation (ASF) under one or more
 *  contributor license agreements.  See the NOTICE file distributed with
 *  this work for additional information regarding copyright ownership.
 *  The ASF licenses this file to You under the Apache License, Version 2.0
 *  (the "License"); you may not use this file except in compliance with
 *  the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License
 */

package org.apache.toree

import org.apache.toree.boot.layer._
import org.apache.toree.boot.{CommandLineOptions, KernelBootstrap}
import org.apache.toree.kernel.BuildInfo

object Main extends App {
  private val options = new CommandLineOptions(args)

  if (options.help) {
    options.printHelpOn(System.out)
  } else if (options.version) {
    println(s"Kernel Version:       ${BuildInfo.version}")
    println(s"Build Date:           ${BuildInfo.builtAtString}")
    println(s"Scala Version:        ${BuildInfo.scalaVersion}")
    println(s"Apache Spark Version: ${BuildInfo.sparkVersion}")
  } else {
    (new KernelBootstrap(options.toConfig)
      with StandardBareInitialization
      with StandardComponentInitialization
      with StandardHandlerInitialization
      with StandardHookInitialization)
      .initialize()
      .waitForTermination()
      .shutdown()
  }
}
